package main

import (
	"fmt"
	"net"
	"strings"
)

func main() {

	//  （1）服务端创建套接字对象socket
	sock, err := net.Listen("tcp", "0.0.0.0:8080")
	if err != nil {
		fmt.Println("err", err)
	}
	// 关闭套接字
	defer sock.Close()

	for true {
		// （2）等待客户端链接
		fmt.Println("server is waiting...")
		conn, _ := sock.Accept()
		fmt.Println(conn)

		//（3）收发消息：conn.Read()  conn.Write()

		// <1-发> 服务端发送一个问候给客户端
		conn.Write([]byte("welcome to server!"))

		for true {
			// <2-收> 接收客户端姓名
			data := make([]byte, 1024) // 1k
			n, err := conn.Read(data)
			if err != nil {
				fmt.Println("err", err)
			}
			fmt.Println(string(data[:n]))

			if string(data[:n]) == "q" {
				break
			}

			var upperName = strings.ToUpper(string(data[:n]))
			fmt.Println("upperName", upperName)
			// <3-发>  服务段将大写的名字发送给客户端
			conn.Write([]byte(upperName))
		}

	}

}
